package main

import (
	"fmt"
	"io"
	"os"
)

//文件复制
func main() {
	//判断命令行参数个数
	args := os.Args
	if len(args) != 3 {
		fmt.Println("parameter is error")
		return
	}
	srcFileName := args[1]
	desFileName := args[2]
	if srcFileName == desFileName {
		fmt.Println("the same fileName")
		return
	}
	//打开源文件
	srcf, errf := os.Open(srcFileName)
	if errf != nil {
		fmt.Println("errf=", errf)
	}
	//目的文件
	desf, errd := os.Create(desFileName)
	if errd != nil {
		fmt.Println("errd=", errd)
	}
	defer srcf.Close()
	defer desf.Close()
	//核心处理，读源文件内容，往目的文件写，读多少写多少
	buf := make([]byte, 1024*2)
	for {
		n, errn := srcf.Read(buf)
		if errn != nil {
			if io.EOF == errn {
				fmt.Println("completion")
				break
			}
			fmt.Println("err=", errn)
		}
		desf.Write(buf[:n])
	}
}
